package com.feilong.commons.core.io;

import java.io.IOException;

/**
 *飞龙 运行命令相关操作
 * 
 * @author <a href="mailto:venusdrogon@163.com">金鑫</a>
 * @version 1.0 2010-12-9 下午11:04:05
 */
public final class Command{

	/**
	 * 在单独的进程中执行指定的字符串命令
	 * 
	 * @param command
	 *            一条指定的系统命令。
	 * @return 一个新的 Process 对象，用于管理子进程
	 */
	public static Process exec(String command){
		Runtime runtime = Runtime.getRuntime();
		try{
			Process process = runtime.exec(command);
			return process;
		}catch (IOException e){
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 使用window资源管理器,打开文件或者文件夹
	 * 
	 * @param fileNameOrDirectory
	 *            文件或者文件夹,路径请使用\\的形式 不要用/,如E:\\Workspaces,不要用 E:/Workspaces
	 * @return Process
	 */
	public static Process execFileOrDirectoryOpen(String fileNameOrDirectory){
		return exec("explorer.exe " + fileNameOrDirectory);
	}

	/**
	 * 使用window资源管理器,让文件或者文件夹获得焦点,即选中
	 * 
	 * @param fileNameOrDirectory
	 *            文件或者文件夹,路径请使用\\的形式 不要用/,如E:\\Workspaces,不要用 E:/Workspaces
	 * @return Process
	 */
	public static Process execFileOrDirectoryFocus(String fileNameOrDirectory){
		return exec("explorer.exe /select," + fileNameOrDirectory);
	}

	/**
	 * 指定时间关闭计算机,win7 需要管理员权限运行
	 * 
	 * @param time
	 *            指定时间
	 * @return Process
	 */
	public static Process execShutdownAt(String time){
		String command = "at " + time + " shutdown -s";
		return exec(command);
	}

	/**
	 * 倒计时关机
	 * 
	 * @param time
	 *            毫秒
	 * @return Process
	 */
	public static Process execShutdown(int haomiao){
		String command = "shutdown -s -t " + haomiao;
		return exec(command);
	}

	/**
	 * 停止倒计时关机计算机,仅对execShutdown计划关机有效,对execShutdownAt无效
	 * 
	 * @return
	 */
	public static Process execShutdownStop(){
		String command = "shutdown -a";
		return exec(command);
	}
	// 50.文件关联
	// //import java.io.*;
	// try {
	// Runtime.getRuntime().exec(%%1); //"assoc .txt =mynote"
	// "assoc [.ext[=[filetype]]]"
	// } catch (IOException e) {
	// e.printStackTrace();
	// }
}
